home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / Goodies / CallBack / SOURCE / CALLBACK.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1995-10-03  |  1.1 KB  |  62 lines

  1. /*
  2. *   Visual Basic Callback Server Source
  3. *
  4. *   (c) Copyright Microsoft Corp. 1995 All Rights Reserved
  5. */ 
  6.  
  7. #include "hostenv.h"
  8. #include "callback.h"
  9. #include "svrmain.h"
  10.  
  11. #define CB_DO_IMPLEMENT
  12. #define CB_DO_VBHEADER
  13. #include "CBackDat.h"
  14. #undef CB_DO_IMPLEMENT
  15. #undef CB_DO_VBHEADER
  16.  
  17. extern "C" long WINAPI AddressOf(long AnyThing)
  18. {
  19.     return AnyThing;
  20. }
  21.  
  22. //CCallBack Implementation//
  23. CCallBack::CCallBack(void)
  24. {
  25.     m_pVBClass = NULL;
  26.     m_bContained = FALSE;
  27. }
  28.  
  29. CCallBack::~CCallBack(void)
  30. {
  31.     if (m_pVBClass && !m_bContained)
  32.         m_pVBClass->Release();
  33. }
  34.  
  35. STDMETHODIMP
  36. CCallBack::putref_VBHandler(THIS_ IDispatch FAR* VBClass)
  37. {
  38.     if (m_pVBClass && !m_bContained)
  39.         m_pVBClass->Release();
  40.     if (VBClass)
  41.         {
  42.         m_bContained = FALSE;
  43.         m_pVBClass = VBClass;
  44.         m_pVBClass->AddRef();
  45.         }
  46.     return NOERROR;
  47. }
  48.  
  49. STDMETHODIMP
  50. CCallBack::get_CallBackType(THIS_ VBCallBackType FAR* retVal)
  51. {
  52.     *retVal = m_CBType;
  53.     return NOERROR;
  54. }
  55.  
  56. STDMETHODIMP
  57. CCallBack::get_IsPersistent(THIS_ VARIANT_BOOL FAR* retVal)
  58. {
  59.     *retVal = m_IsPersistent;
  60.     return NOERROR;
  61. }
  62.